{{tag>réseau BROUILLON}}

----

====== Wake on LAN : réveil de l'ordinateur via le réseau ======


===== Définition =====

Le Wake-on-LAN (WOL) ou mise en marche du PC depuis le réseau est une technologie développée par AMD et IBM, permettant à un ordinateur mis en veille d'être démarré à distance par l'envoi d'un « magic-packet » sur la carte réseau  supportant le Wake-on-LAN. 

Sur les ordinateurs récents, l'arrêt complet de l'ordinateur est possible. En effet, l'alimentation est toujours présente et la carte-mère est généralement en veille. D'ailleurs un voyant sur près du connecteur réseau signale la présence d'une activité, même ordinateur éteint.

  * Ubuntu dispose de 2 packets pour gérer la fonction WOL : [[etherwake]], [[wakeonlan]]
  * vous aurez besoin d'une station de contrôle pour piloter le réveil d'un ordinateur distant (a priori sur votre réseau local), sur laquelle vous installerez l'un de ces 2 packets,
  * pour réveiller l'ordinateur distant, il faut connaître son adresse MAC.
  * sur l'ordinateur distant, il faut configurer le BIOS pour que la fonction WOL soit activée, pas de logiciel supplémentaire a installer,

===== Mise en oeuvre =====
==== Paramétrage du BIOS ====
Pour que le WOL soit possible il faut **activer** l'option correspondante dans votre bios. Suivant la version/fabricant de votre BIOS l'option se nomme différemment : Power On PCI, Wake On Network,...


==== Paramétrage de la carte réseau ====
Il faut maintenant paramétrer la carte réseau pour qu'elle réagisse au signal "Wake-on-lan" qu'on appelle aussi paquet "magique" (magic packet).

**Note :** Je ne suis pas arrivé à paramétrer le WOL une fois pour toute dans la   mémoire morte de la carte réseau. Une solution (pas très propre) consiste à exécuter un script au démarrage et/ou à l'arrêt de l'ordinateur et/ou de l'interface réseau.

=== En dur ===
Je ne suis jamais arrivé à écrire dans l'EEPROM de ma carte réseau pour qu'elle  
    sudo gedit /etc/network/interfaces
et ajoutez
    pre-down /usr/sbin/ethtool -s eth0 wol g

puis on finit avec l'extinction:

éditez
    sudo gedit /etc/default/halt
et ajoutez
    WOL=1

puis éditez
    sudo gedit /etc/init.d/halt

Juste avant la ligne
    log_action_msg "Will now halt"

ajoutez
    # dont shut interfaces down if WOL=1
    wol="-i"
    if [ "$WOL" = "1" ]
    then
        wol=""
    fi
Puis remplacez la ligne
    halt -d -f -i $poweroff $hddown
par :
    halt -d -f $wol $poweroff $hddown

Voilà, il y a peut-être des choses en double ou il y a peut-être plus simple/facile/optimisé, mais je pense que cette méthode marche pas mal.
Peut-être à mettre sur le wiki, mais j'ai pas encore regardé comment faire, ni même si c'est assez complet pour l'y faire figurer...
enfin d'ici la, bon wol.
Pitch ;)

===Méthode éphémère alternative===
Testée avec Feisty,fonctionne sous Gusty

En essayant les méthodes précédentes, j'en suis venu à ne modifier qu'un seul fichier pour avoir un Wake On Lan qui fonctionne. Comme les drivers de cartes réseau ont tendance, en se chargeant, à désactiver le WOL, nous allons tout simplement activer le WOL sur n'importe quel évènement réseau, que ce soit ''start'', ''stop'', ''restart'' ou ''force-reload''.

Pour cela, éditons /etc/init.d/networking :
    sudo gedit /etc/init.d/networking

Et ajoutons ''ethtool -s eth0 wol g'' à la fin de chaque fonction (attention, votre carte réseau n'est peut-être pas identifiée sous eth0 mais eth1, pensez à faire la modification dans les commandes. Afin de savoir, tapez dans un terminal: ifconfig vous aurez descriptif des interfaces réseau en service sur votre machine), ce qui donne :

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          networking
    # Required-Start:    mountkernfs ifupdown $local_fs
    # Required-Stop:     ifupdown $local_fs
    # Default-Start:     S
    # Default-Stop:      0 6
    ### END INIT INFO
    
    PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
    
    [ -x /sbin/ifup ] || exit 0
    
    . /lib/lsb/init-functions
    
    
    case "$1" in
    start)
            log_action_begin_msg "Configuring network interfaces"
            type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
            if [ "$VERBOSE" != no ]; then
                if ifup -a; then
                    log_action_end_msg $?
            else
                    log_action_end_msg $?
                fi
            else
                if ifup -a >/dev/null 2>&1; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            fi
            type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    stop)
            if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
                    grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
                log_warning_msg "not deconfiguring network interfaces: network shares still mounted."
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
                exit 0
            fi
    
            log_action_begin_msg "Deconfiguring network interfaces"
            if [ "$VERBOSE" != no ]; then
                if ifdown -a --exclude=lo; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            else
                if ifdown -a --exclude=lo >/dev/null 2>/dev/null; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            fi
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    force-reload|restart)
            log_action_begin_msg "Reconfiguring network interfaces"
            ifdown -a --exclude=lo || true
            if ifup -a --exclude=lo; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    *)
            echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            exit 1
            ;;
    esac
    #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
    exit 1

Et voilà ! Que le réseau soit démarré, arrêté, redémarré ou rechargé, le wol sera réactivé, ce qui lui permet notamment de rester activé à l'arrêt de l'ordinateur. 

==== Notes aux rédacteurs ====

FIXME

  * Cette page serait à réviser et fusionner avec la page [[wakeonlan]]

----

//Contributeurs : Dwan, Hipopo.//